## Makefile.am for GTK+
include $(top_srcdir)/Makefile.decl
-SRC_SUBDIRS = gdk gtk libgail-util modules demos tests perf examples
+SRC_SUBDIRS = gdk gtk libgail-util modules demos tests testsuite perf examples
SUBDIRS = po po-properties $(SRC_SUBDIRS) docs m4macros build
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
tests/css/parser/Makefile
tests/reftests/Makefile
tests/visuals/Makefile
+testsuite/Makefile
+testsuite/gdk/Makefile
docs/Makefile
docs/reference/Makefile
docs/reference/gdk/Makefile
gdk/win32/rc/gdk.rc
gdk/quartz/Makefile
gdk/wayland/Makefile
-gdk/tests/Makefile
gdk/gdkversionmacros.h
gtk/Makefile
gtk/makefile.msc
--includedir=$(srcdir) \
--includedir=.
-SUBDIRS = $(GDK_BACKENDS) . tests
+SUBDIRS = $(GDK_BACKENDS) .
-DIST_SUBDIRS = win32 x11 quartz broadway wayland tests
+DIST_SUBDIRS = win32 x11 quartz broadway wayland
CLEANFILES =
+++ /dev/null
-include $(top_srcdir)/Makefile.decl
-
-NULL=
-
-noinst_PROGRAMS = $(TEST_PROGS)
-
-AM_CPPFLAGS = \
- $(GDK_DEP_CFLAGS) \
- -I$(top_srcdir) \
- -I$(top_builddir)/gdk \
- $(NULL)
-
-progs_ldadd = \
- $(GDK_DEP_LIBS) \
- $(top_builddir)/gdk/libgdk-3.la \
- $(NULL)
-
-#TEST_PROGS += check-gdk-cairo
-#check_gdk_cairo_SOURCES = check-gdk-cairo.c
-#check_gdk_cairo_LDADD = $(progs_ldadd)
-
-TEST_PROGS += rgba
-rgba_SOURCES = rgba.c
-rgba_LDADD = $(progs_ldadd)
-
-TEST_PROGS += encoding
-encoding_SOURCES = encoding.c
-encoding_LDADD = $(progs_ldadd)
-
-TEST_PROGS += display
-display_SOURCES = display.c
-display_LDADD = $(progs_ldadd)
-
-TEST_PROGS += keysyms
-keysyms_SOURCES = keysyms.c
-keysyms_LDADD = $(progs_ldadd)
-
-CLEANFILES = \
- cairosurface.png \
- gdksurface.png
-
-if BUILDOPT_INSTALL_TESTS
-insttestdir=$(pkglibexecdir)/installed-tests
-insttest_PROGRAMS = $(TEST_PROGS)
-
-substitutions = \
- -e s,@pkglibexecdir\@,$(pkglibexecdir),g \
- $(NULL)
-
-test_in_files = \
- rgba.test.in \
- encoding.test.in \
- display.test.in \
- keysyms.test.in \
- $(NULL)
-
-test_files = $(test_in_files:.test.in=.test)
-
-$(test_files): %.test: %.test.in
- $(AM_V_GEN) sed $(substitutions) $< > $@.tmp && mv $@.tmp $@
-
-EXTRA_DIST += $(test_in_files)
-
-testmetadir = $(datadir)/installed-tests/$(PACKAGE)
-testmeta_DATA = $(test_files)
-endif
-
--include $(top_srcdir)/git.mk
+++ /dev/null
-/* This file is part of GTK+
- *
- * AUTHORS
- * Sven Herzberg
- *
- * Copyright (C) 2008 Sven Herzberg
- *
- * This work is provided "as is"; redistribution and modification
- * in whole or in part, in any medium, physical or electronic is
- * permitted without restriction.
- *
- * This work is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- * In no event shall the authors or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even
- * if advised of the possibility of such damage.
- */
-
-#include <glib/gstdio.h>
-#include <gdk/gdk.h>
-#ifdef CAIRO_HAS_QUARTZ_SURFACE
-#include <cairo-quartz.h>
-#endif
-
-static void
-test (cairo_t* cr)
-{
- cairo_save (cr);
- cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
- cairo_paint (cr);
- cairo_restore (cr);
-
- cairo_move_to (cr, 10.0, 20.0);
- cairo_line_to (cr, 10.0, 30.0);
- cairo_stroke (cr);
-
- cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.5);
- cairo_arc (cr, 0.0, 0.0, 10.0, 0.0, G_PI/2);
- cairo_stroke (cr);
-}
-
-static void
-test_surface_orientation (void)
-{
- cairo_surface_t *surface;
- GdkPixbuf* pixbuf;
- GdkPixbuf* pbuf_platform;
- GdkPixbuf* pbuf_imagesrf;
- GError * error = NULL;
- cairo_surface_t* surface;
- cairo_t* cr;
- guchar* data_platform;
- guchar* data_imagesrf;
- guint i;
-
- /* create "platform.png" via native cairo surface */
- surface = gdk_window_create_similar_surface (gdk_get_default_root_window (),
- CAIRO_CONTENT_COLOR,
- 100,
- 80);
- cr = cairo_create (surface);
- test (cr);
- cairo_destroy (cr);
-
- pixbuf = gdk_pixbuf_get_from_surface (NULL,
- surface,
- 0, 0,
- 0, 0,
- 100, 80);
- if (!gdk_pixbuf_save (pixbuf, "gdksurface.png", "png", NULL, NULL)) {
- g_error ("Eeek! Couldn't save the file \"gdksurface.png\"");
- }
- g_object_unref (pixbuf);
-
- cairo_surface_destroy (surface);
-
- /* create "cairosurface.png" via pure cairo */
-#ifndef CAIRO_HAS_QUARTZ_SURFACE
- surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 100, 80);
-#else
- surface = cairo_quartz_surface_create (CAIRO_FORMAT_RGB24, 100, 80);
-#endif
- cr = cairo_create (surface);
- test (cr);
- cairo_destroy (cr);
- if (CAIRO_STATUS_SUCCESS != cairo_surface_write_to_png (surface, "cairosurface.png")) {
- g_error ("Eeek! Couldn't save the file \"cairosurface.png\"");
- }
- cairo_surface_destroy (surface);
-
- /* compare the images */
- pbuf_platform = gdk_pixbuf_new_from_file ("gdksurface.png", &error);
- if (!pbuf_platform || error) {
- g_error ("Eeek! Error loading \"gdksurface.png\"");
- }
- pbuf_imagesrf = gdk_pixbuf_new_from_file ("cairosurface.png", &error);
- if (!pbuf_imagesrf || error) {
- g_object_unref (pbuf_platform);
- g_error ("Eeek! Error loading \"cairosurface.png\"");
- }
-
- g_assert (gdk_pixbuf_get_width (pbuf_platform) ==
- gdk_pixbuf_get_width (pbuf_imagesrf));
- g_assert (gdk_pixbuf_get_height (pbuf_platform) ==
- gdk_pixbuf_get_height (pbuf_imagesrf));
- g_assert (gdk_pixbuf_get_rowstride (pbuf_platform) ==
- gdk_pixbuf_get_rowstride (pbuf_imagesrf));
- g_assert (gdk_pixbuf_get_n_channels (pbuf_platform) ==
- gdk_pixbuf_get_n_channels (pbuf_imagesrf));
-
- data_platform = gdk_pixbuf_get_pixels (pbuf_platform);
- data_imagesrf = gdk_pixbuf_get_pixels (pbuf_imagesrf);
-
- for (i = 0; i < gdk_pixbuf_get_height (pbuf_platform) * gdk_pixbuf_get_rowstride (pbuf_platform); i++) {
- if (data_platform[i] != data_imagesrf[i]) {
- g_warning ("Eeek! Images are differing at byte %d", i);
- g_object_unref (pbuf_platform);
- g_object_unref (pbuf_imagesrf);
- g_assert_not_reached ();
- }
- }
-
- g_object_unref (pbuf_platform);
- g_object_unref (pbuf_imagesrf);
-
- g_unlink ("gdksurface.png");
- g_unlink ("cairosurface.png");
-}
-
-int
-main (int argc,
- char**argv)
-{
- g_test_init (&argc, &argv, NULL);
- gdk_init (&argc, &argv);
-
- g_test_add_func ("/gdk/surface/orientation",
- test_surface_orientation);
-
- return g_test_run ();
-}
-
+++ /dev/null
-#include <stdlib.h>
-
-#include <gdk/gdk.h>
-
-static void
-test_unset_display (void)
-{
- if (g_test_trap_fork (0, 0))//G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
- {
- GdkDisplayManager *manager;
-
- g_unsetenv ("DISPLAY");
-
- g_assert (!gdk_init_check (NULL, NULL));
- manager = gdk_display_manager_get ();
- g_assert (manager != NULL);
- g_assert (gdk_display_manager_get_default_display (manager) == NULL);
-
- exit (0);
- }
- g_test_trap_assert_passed ();
-
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
- {
- g_unsetenv ("DISPLAY");
-
- gdk_init (NULL, NULL);
-
- exit (0);
- }
- g_test_trap_assert_failed ();
- g_test_trap_assert_stderr ("*cannot open display*");
-}
-
-static void
-test_bad_display (void)
-{
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
- {
- GdkDisplayManager *manager;
-
- g_setenv ("DISPLAY", "poo", TRUE);
-
- g_assert (!gdk_init_check (NULL, NULL));
- manager = gdk_display_manager_get ();
- g_assert (manager != NULL);
- g_assert (gdk_display_manager_get_default_display (manager) == NULL);
-
- exit (0);
- }
- g_test_trap_assert_passed ();
-
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
- {
- g_setenv ("DISPLAY", "poo", TRUE);
-
- gdk_init (NULL, NULL);
-
- exit (0);
- }
- g_test_trap_assert_failed ();
- g_test_trap_assert_stderr ("*cannot open display*");
-}
-
-int
-main (int argc, char *argv[])
-{
- g_test_init (&argc, &argv, NULL);
-
- g_test_add_func ("/display/unset-display", test_unset_display);
- g_test_add_func ("/display/bad-display", test_bad_display);
-
- return g_test_run ();
-}
+++ /dev/null
-[Test]
-Exec=/bin/sh -c "@pkglibexecdir@/installed-tests/display"
-Type=session
+++ /dev/null
-#include <gdk/gdk.h>
-#ifdef GDK_WINDOWING_X11
-#include <gdk/x11/gdkx.h>
-#endif
-
-static void
-test_to_text_list (void)
-{
- GdkDisplay *display;
-
- display = gdk_display_get_default ();
-
-#ifdef GDK_WINDOWING_X11
- if (GDK_IS_X11_DISPLAY (display))
- {
- GdkAtom encoding;
- gint format;
- const guchar *text;
- gint length;
- gchar **list;
- gint n;
-
- encoding = gdk_atom_intern ("UTF8_STRING", FALSE);
- format = 8;
- text = (const guchar*)"abcdef \304\201 \304\205\0ABCDEF \304\200 \304\204";
- length = 25;
- n = gdk_x11_display_text_property_to_text_list (display, encoding, format, text, length, &list);
- g_assert_cmpint (n, ==, 2);
- g_assert (g_str_has_prefix (list[0], "abcdef "));
- g_assert (g_str_has_prefix (list[1], "ABCDEF "));
-
- gdk_x11_free_text_list (list);
- }
-#endif
-}
-
-int
-main (int argc, char *argv[])
-{
- g_test_init (&argc, &argv, NULL);
- gdk_init (&argc, &argv);
-
- g_test_add_func ("/encoding/to-text-list", test_to_text_list);
-
- return g_test_run ();
-}
+++ /dev/null
-[Test]
-Exec=/bin/sh -c "@pkglibexecdir@/installed-tests/encoding"
-Type=session
+++ /dev/null
-#include <locale.h>
-#include <gdk/gdk.h>
-
-static void
-test_keysyms_basic (void)
-{
- struct {
- guint keyval;
- const gchar *name;
- const gchar *other_name;
- } tests[] = {
- { GDK_KEY_space, "space", NULL },
- { GDK_KEY_a, "a", NULL },
- { GDK_KEY_Thorn, "Thorn", "THORN" },
- { GDK_KEY_Hangul_J_RieulTieut, "Hangul_J_RieulTieut", NULL },
- { GDK_KEY_Page_Up, "Page_Up", NULL },
- { GDK_KEY_KP_Multiply, "KP_Multiply", NULL },
- { GDK_KEY_MonBrightnessUp, "MonBrightnessUp", NULL },
- { 0, NULL }
- };
- gint i;
-
- for (i = 0; tests[i].keyval != 0; i++)
- {
- g_assert_cmpstr (gdk_keyval_name (tests[i].keyval), ==, tests[i].name);
- g_assert_cmpuint (gdk_keyval_from_name (tests[i].name), ==, tests[i].keyval);
- if (tests[i].other_name)
- g_assert_cmpuint (gdk_keyval_from_name (tests[i].other_name), ==, tests[i].keyval);
- }
-}
-
-static void
-test_keysyms_void (void)
-{
- g_assert_cmpuint (gdk_keyval_from_name ("NoSuchKeysym"), ==, GDK_KEY_VoidSymbol);
- g_assert_cmpstr (gdk_keyval_name (GDK_KEY_VoidSymbol), ==, "0xffffff");
-}
-
-static void
-test_keysyms_xf86 (void)
-{
- g_assert_cmpuint (gdk_keyval_from_name ("XF86MonBrightnessUp"), ==, GDK_KEY_MonBrightnessUp);
- g_assert_cmpuint (gdk_keyval_from_name ("XF86MonBrightnessDown"), ==, GDK_KEY_MonBrightnessDown);
- g_assert_cmpuint (gdk_keyval_from_name ("XF86KbdBrightnessUp"), ==, GDK_KEY_KbdBrightnessUp);
- g_assert_cmpuint (gdk_keyval_from_name ("XF86KbdBrightnessDown"), ==, GDK_KEY_KbdBrightnessDown);
- g_assert_cmpuint (gdk_keyval_from_name ("XF86Battery"), ==, GDK_KEY_Battery);
- g_assert_cmpuint (gdk_keyval_from_name ("XF86Display"), ==, GDK_KEY_Display);
-
- g_assert_cmpuint (gdk_keyval_from_name ("MonBrightnessUp"), ==, GDK_KEY_MonBrightnessUp);
- g_assert_cmpuint (gdk_keyval_from_name ("MonBrightnessDown"), ==, GDK_KEY_MonBrightnessDown);
- g_assert_cmpuint (gdk_keyval_from_name ("KbdBrightnessUp"), ==, GDK_KEY_KbdBrightnessUp);
- g_assert_cmpuint (gdk_keyval_from_name ("KbdBrightnessDown"), ==, GDK_KEY_KbdBrightnessDown);
- g_assert_cmpuint (gdk_keyval_from_name ("Battery"), ==, GDK_KEY_Battery);
- g_assert_cmpuint (gdk_keyval_from_name ("Display"), ==, GDK_KEY_Display);
-}
-
-int main (int argc, char *argv[])
-{
- setlocale (LC_ALL, "");
-
- g_test_init (&argc, &argv, NULL);
- gdk_init (&argc, &argv);
-
- g_test_add_func ("/keysyms/basic", test_keysyms_basic);
- g_test_add_func ("/keysyms/void", test_keysyms_void);
- g_test_add_func ("/keysyms/xf86", test_keysyms_xf86);
-
- return g_test_run ();
-}
+++ /dev/null
-[Test]
-Exec=/bin/sh -c "@pkglibexecdir@/installed-tests/keysyms"
-Type=session
+++ /dev/null
-#include <locale.h>
-#include <gdk/gdk.h>
-
-static void
-test_color_parse (void)
-{
- GdkRGBA color;
- GdkRGBA expected;
- gboolean res;
-
- res = gdk_rgba_parse (&color, "foo");
- g_assert (!res);
-
- res = gdk_rgba_parse (&color, "");
- g_assert (!res);
-
- expected.red = 100/255.;
- expected.green = 90/255.;
- expected.blue = 80/255.;
- expected.alpha = 0.1;
- res = gdk_rgba_parse (&color, "rgba(100,90,80,0.1)");
- g_assert (res);
- g_assert (gdk_rgba_equal (&color, &expected));
-
- expected.red = 0.4;
- expected.green = 0.3;
- expected.blue = 0.2;
- expected.alpha = 0.1;
- res = gdk_rgba_parse (&color, "rgba(40%,30%,20%,0.1)");
- g_assert (res);
- g_assert (gdk_rgba_equal (&color, &expected));
-
- res = gdk_rgba_parse (&color, "rgba( 40 % , 30 % , 20 % , 0.1 )");
- g_assert (res);
- g_assert (gdk_rgba_equal (&color, &expected));
-
- expected.red = 1.0;
- expected.green = 0.0;
- expected.blue = 0.0;
- expected.alpha = 1.0;
- res = gdk_rgba_parse (&color, "red");
- g_assert (res);
- g_assert (gdk_rgba_equal (&color, &expected));
-
- expected.red = 0.0;
- expected.green = 0x8080 / 65535.;
- expected.blue = 1.0;
- expected.alpha = 1.0;
- res = gdk_rgba_parse (&color, "#0080ff");
- g_assert (res);
- g_assert (gdk_rgba_equal (&color, &expected));
-
- expected.red = 0.0;
- expected.green = 0.0;
- expected.blue = 0.0;
- expected.alpha = 1.0;
- res = gdk_rgba_parse (&color, "rgb(0,0,0)");
- g_assert (res);
- g_assert (gdk_rgba_equal (&color, &expected));
-}
-
-static void
-test_color_to_string (void)
-{
- GdkRGBA rgba;
- GdkRGBA out;
- gchar *res;
- gchar *res_de;
- gchar *res_en;
- gchar *orig;
-
- /* Using /255. values for the r, g, b components should
- * make sure they round-trip exactly without rounding
- * from the double => integer => double conversions */
- rgba.red = 1.0;
- rgba.green = 128/255.;
- rgba.blue = 64/255.;
- rgba.alpha = 0.5;
-
- orig = g_strdup (setlocale (LC_ALL, NULL));
- res = gdk_rgba_to_string (&rgba);
- gdk_rgba_parse (&out, res);
- g_assert (gdk_rgba_equal (&rgba, &out));
-
- setlocale (LC_ALL, "de_DE.utf-8");
- res_de = gdk_rgba_to_string (&rgba);
- g_assert_cmpstr (res, ==, res_de);
-
- setlocale (LC_ALL, "en_US.utf-8");
- res_en = gdk_rgba_to_string (&rgba);
- g_assert_cmpstr (res, ==, res_en);
-
- g_free (res);
- g_free (res_de);
- g_free (res_en);
-
- setlocale (LC_ALL, orig);
- g_free (orig);
-}
-
-static void
-test_color_copy (void)
-{
- GdkRGBA rgba;
- GdkRGBA *out;
-
- rgba.red = 0.0;
- rgba.green = 0.1;
- rgba.blue = 0.6;
- rgba.alpha = 0.9;
-
- out = gdk_rgba_copy (&rgba);
- g_assert (gdk_rgba_equal (&rgba, out));
-
- gdk_rgba_free (out);
-}
-
-static void
-test_color_parse_nonsense (void)
-{
- GdkRGBA color;
- gboolean res;
-
- g_test_bug ("667485");
-
- res = gdk_rgba_parse (&color, "rgb(,,)");
- g_assert (!res);
-
- res = gdk_rgba_parse (&color, "rgb(%,%,%)");
- g_assert (!res);
-
- res = gdk_rgba_parse (&color, "rgb(nan,nan,nan)");
- g_assert (!res);
-
- res = gdk_rgba_parse (&color, "rgb(inf,inf,inf)");
- g_assert (!res);
-
- res = gdk_rgba_parse (&color, "rgb(1p12,0,0)");
- g_assert (!res);
-
- res = gdk_rgba_parse (&color, "rgb(5d1%,1,1)");
- g_assert (!res);
-
- res = gdk_rgba_parse (&color, "rgb(0,0,0)moo");
- g_assert (!res);
-
- res = gdk_rgba_parse (&color, "rgb(0,0,0) moo");
- g_assert (!res);
-}
-
-int
-main (int argc, char *argv[])
-{
- g_test_init (&argc, &argv, NULL);
-
- g_test_bug_base ("http://bugzilla.gnome.org");
-
- g_test_add_func ("/rgba/parse", test_color_parse);
- g_test_add_func ("/rgba/parse/nonsense", test_color_parse_nonsense);
- g_test_add_func ("/rgba/to-string", test_color_to_string);
- g_test_add_func ("/rgba/copy", test_color_copy);
-
- return g_test_run ();
-}
+++ /dev/null
-[Test]
-Exec=/bin/sh -c "@pkglibexecdir@/installed-tests/rgba"
-Type=session
--- /dev/null
+include $(top_srcdir)/Makefile.decl
+
+SUBDIRS = gdk
+
+-include $(top_srcdir)/git.mk
+
--- /dev/null
+include $(top_srcdir)/Makefile.decl
+
+NULL=
+
+noinst_PROGRAMS = $(TEST_PROGS)
+
+AM_CPPFLAGS = \
+ $(GDK_DEP_CFLAGS) \
+ -I$(top_srcdir) \
+ -I$(top_builddir)/gdk \
+ $(NULL)
+
+progs_ldadd = \
+ $(GDK_DEP_LIBS) \
+ $(top_builddir)/gdk/libgdk-3.la \
+ $(NULL)
+
+#TEST_PROGS += check-gdk-cairo
+#check_gdk_cairo_SOURCES = check-gdk-cairo.c
+#check_gdk_cairo_LDADD = $(progs_ldadd)
+
+TEST_PROGS += rgba
+rgba_SOURCES = rgba.c
+rgba_LDADD = $(progs_ldadd)
+
+TEST_PROGS += encoding
+encoding_SOURCES = encoding.c
+encoding_LDADD = $(progs_ldadd)
+
+TEST_PROGS += display
+display_SOURCES = display.c
+display_LDADD = $(progs_ldadd)
+
+TEST_PROGS += keysyms
+keysyms_SOURCES = keysyms.c
+keysyms_LDADD = $(progs_ldadd)
+
+CLEANFILES = \
+ cairosurface.png \
+ gdksurface.png
+
+if BUILDOPT_INSTALL_TESTS
+insttestdir=$(pkglibexecdir)/installed-tests
+insttest_PROGRAMS = $(TEST_PROGS)
+
+substitutions = \
+ -e s,@pkglibexecdir\@,$(pkglibexecdir),g \
+ $(NULL)
+
+test_in_files = \
+ rgba.test.in \
+ encoding.test.in \
+ display.test.in \
+ keysyms.test.in \
+ $(NULL)
+
+test_files = $(test_in_files:.test.in=.test)
+
+$(test_files): %.test: %.test.in
+ $(AM_V_GEN) sed $(substitutions) $< > $@.tmp && mv $@.tmp $@
+
+EXTRA_DIST += $(test_in_files)
+
+testmetadir = $(datadir)/installed-tests/$(PACKAGE)
+testmeta_DATA = $(test_files)
+endif
+
+-include $(top_srcdir)/git.mk
--- /dev/null
+/* This file is part of GTK+
+ *
+ * AUTHORS
+ * Sven Herzberg
+ *
+ * Copyright (C) 2008 Sven Herzberg
+ *
+ * This work is provided "as is"; redistribution and modification
+ * in whole or in part, in any medium, physical or electronic is
+ * permitted without restriction.
+ *
+ * This work is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * In no event shall the authors or contributors be liable for any
+ * direct, indirect, incidental, special, exemplary, or consequential
+ * damages (including, but not limited to, procurement of substitute
+ * goods or services; loss of use, data, or profits; or business
+ * interruption) however caused and on any theory of liability, whether
+ * in contract, strict liability, or tort (including negligence or
+ * otherwise) arising in any way out of the use of this software, even
+ * if advised of the possibility of such damage.
+ */
+
+#include <glib/gstdio.h>
+#include <gdk/gdk.h>
+#ifdef CAIRO_HAS_QUARTZ_SURFACE
+#include <cairo-quartz.h>
+#endif
+
+static void
+test (cairo_t* cr)
+{
+ cairo_save (cr);
+ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
+ cairo_paint (cr);
+ cairo_restore (cr);
+
+ cairo_move_to (cr, 10.0, 20.0);
+ cairo_line_to (cr, 10.0, 30.0);
+ cairo_stroke (cr);
+
+ cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.5);
+ cairo_arc (cr, 0.0, 0.0, 10.0, 0.0, G_PI/2);
+ cairo_stroke (cr);
+}
+
+static void
+test_surface_orientation (void)
+{
+ cairo_surface_t *surface;
+ GdkPixbuf* pixbuf;
+ GdkPixbuf* pbuf_platform;
+ GdkPixbuf* pbuf_imagesrf;
+ GError * error = NULL;
+ cairo_surface_t* surface;
+ cairo_t* cr;
+ guchar* data_platform;
+ guchar* data_imagesrf;
+ guint i;
+
+ /* create "platform.png" via native cairo surface */
+ surface = gdk_window_create_similar_surface (gdk_get_default_root_window (),
+ CAIRO_CONTENT_COLOR,
+ 100,
+ 80);
+ cr = cairo_create (surface);
+ test (cr);
+ cairo_destroy (cr);
+
+ pixbuf = gdk_pixbuf_get_from_surface (NULL,
+ surface,
+ 0, 0,
+ 0, 0,
+ 100, 80);
+ if (!gdk_pixbuf_save (pixbuf, "gdksurface.png", "png", NULL, NULL)) {
+ g_error ("Eeek! Couldn't save the file \"gdksurface.png\"");
+ }
+ g_object_unref (pixbuf);
+
+ cairo_surface_destroy (surface);
+
+ /* create "cairosurface.png" via pure cairo */
+#ifndef CAIRO_HAS_QUARTZ_SURFACE
+ surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 100, 80);
+#else
+ surface = cairo_quartz_surface_create (CAIRO_FORMAT_RGB24, 100, 80);
+#endif
+ cr = cairo_create (surface);
+ test (cr);
+ cairo_destroy (cr);
+ if (CAIRO_STATUS_SUCCESS != cairo_surface_write_to_png (surface, "cairosurface.png")) {
+ g_error ("Eeek! Couldn't save the file \"cairosurface.png\"");
+ }
+ cairo_surface_destroy (surface);
+
+ /* compare the images */
+ pbuf_platform = gdk_pixbuf_new_from_file ("gdksurface.png", &error);
+ if (!pbuf_platform || error) {
+ g_error ("Eeek! Error loading \"gdksurface.png\"");
+ }
+ pbuf_imagesrf = gdk_pixbuf_new_from_file ("cairosurface.png", &error);
+ if (!pbuf_imagesrf || error) {
+ g_object_unref (pbuf_platform);
+ g_error ("Eeek! Error loading \"cairosurface.png\"");
+ }
+
+ g_assert (gdk_pixbuf_get_width (pbuf_platform) ==
+ gdk_pixbuf_get_width (pbuf_imagesrf));
+ g_assert (gdk_pixbuf_get_height (pbuf_platform) ==
+ gdk_pixbuf_get_height (pbuf_imagesrf));
+ g_assert (gdk_pixbuf_get_rowstride (pbuf_platform) ==
+ gdk_pixbuf_get_rowstride (pbuf_imagesrf));
+ g_assert (gdk_pixbuf_get_n_channels (pbuf_platform) ==
+ gdk_pixbuf_get_n_channels (pbuf_imagesrf));
+
+ data_platform = gdk_pixbuf_get_pixels (pbuf_platform);
+ data_imagesrf = gdk_pixbuf_get_pixels (pbuf_imagesrf);
+
+ for (i = 0; i < gdk_pixbuf_get_height (pbuf_platform) * gdk_pixbuf_get_rowstride (pbuf_platform); i++) {
+ if (data_platform[i] != data_imagesrf[i]) {
+ g_warning ("Eeek! Images are differing at byte %d", i);
+ g_object_unref (pbuf_platform);
+ g_object_unref (pbuf_imagesrf);
+ g_assert_not_reached ();
+ }
+ }
+
+ g_object_unref (pbuf_platform);
+ g_object_unref (pbuf_imagesrf);
+
+ g_unlink ("gdksurface.png");
+ g_unlink ("cairosurface.png");
+}
+
+int
+main (int argc,
+ char**argv)
+{
+ g_test_init (&argc, &argv, NULL);
+ gdk_init (&argc, &argv);
+
+ g_test_add_func ("/gdk/surface/orientation",
+ test_surface_orientation);
+
+ return g_test_run ();
+}
+
--- /dev/null
+#include <stdlib.h>
+
+#include <gdk/gdk.h>
+
+static void
+test_unset_display (void)
+{
+ if (g_test_trap_fork (0, 0))//G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
+ {
+ GdkDisplayManager *manager;
+
+ g_unsetenv ("DISPLAY");
+
+ g_assert (!gdk_init_check (NULL, NULL));
+ manager = gdk_display_manager_get ();
+ g_assert (manager != NULL);
+ g_assert (gdk_display_manager_get_default_display (manager) == NULL);
+
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
+ {
+ g_unsetenv ("DISPLAY");
+
+ gdk_init (NULL, NULL);
+
+ exit (0);
+ }
+ g_test_trap_assert_failed ();
+ g_test_trap_assert_stderr ("*cannot open display*");
+}
+
+static void
+test_bad_display (void)
+{
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
+ {
+ GdkDisplayManager *manager;
+
+ g_setenv ("DISPLAY", "poo", TRUE);
+
+ g_assert (!gdk_init_check (NULL, NULL));
+ manager = gdk_display_manager_get ();
+ g_assert (manager != NULL);
+ g_assert (gdk_display_manager_get_default_display (manager) == NULL);
+
+ exit (0);
+ }
+ g_test_trap_assert_passed ();
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
+ {
+ g_setenv ("DISPLAY", "poo", TRUE);
+
+ gdk_init (NULL, NULL);
+
+ exit (0);
+ }
+ g_test_trap_assert_failed ();
+ g_test_trap_assert_stderr ("*cannot open display*");
+}
+
+int
+main (int argc, char *argv[])
+{
+ g_test_init (&argc, &argv, NULL);
+
+ g_test_add_func ("/display/unset-display", test_unset_display);
+ g_test_add_func ("/display/bad-display", test_bad_display);
+
+ return g_test_run ();
+}
--- /dev/null
+[Test]
+Exec=/bin/sh -c "@pkglibexecdir@/installed-tests/display"
+Type=session
--- /dev/null
+#include <gdk/gdk.h>
+#ifdef GDK_WINDOWING_X11
+#include <gdk/x11/gdkx.h>
+#endif
+
+static void
+test_to_text_list (void)
+{
+ GdkDisplay *display;
+
+ display = gdk_display_get_default ();
+
+#ifdef GDK_WINDOWING_X11
+ if (GDK_IS_X11_DISPLAY (display))
+ {
+ GdkAtom encoding;
+ gint format;
+ const guchar *text;
+ gint length;
+ gchar **list;
+ gint n;
+
+ encoding = gdk_atom_intern ("UTF8_STRING", FALSE);
+ format = 8;
+ text = (const guchar*)"abcdef \304\201 \304\205\0ABCDEF \304\200 \304\204";
+ length = 25;
+ n = gdk_x11_display_text_property_to_text_list (display, encoding, format, text, length, &list);
+ g_assert_cmpint (n, ==, 2);
+ g_assert (g_str_has_prefix (list[0], "abcdef "));
+ g_assert (g_str_has_prefix (list[1], "ABCDEF "));
+
+ gdk_x11_free_text_list (list);
+ }
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ g_test_init (&argc, &argv, NULL);
+ gdk_init (&argc, &argv);
+
+ g_test_add_func ("/encoding/to-text-list", test_to_text_list);
+
+ return g_test_run ();
+}
--- /dev/null
+[Test]
+Exec=/bin/sh -c "@pkglibexecdir@/installed-tests/encoding"
+Type=session
--- /dev/null
+#include <locale.h>
+#include <gdk/gdk.h>
+
+static void
+test_keysyms_basic (void)
+{
+ struct {
+ guint keyval;
+ const gchar *name;
+ const gchar *other_name;
+ } tests[] = {
+ { GDK_KEY_space, "space", NULL },
+ { GDK_KEY_a, "a", NULL },
+ { GDK_KEY_Thorn, "Thorn", "THORN" },
+ { GDK_KEY_Hangul_J_RieulTieut, "Hangul_J_RieulTieut", NULL },
+ { GDK_KEY_Page_Up, "Page_Up", NULL },
+ { GDK_KEY_KP_Multiply, "KP_Multiply", NULL },
+ { GDK_KEY_MonBrightnessUp, "MonBrightnessUp", NULL },
+ { 0, NULL }
+ };
+ gint i;
+
+ for (i = 0; tests[i].keyval != 0; i++)
+ {
+ g_assert_cmpstr (gdk_keyval_name (tests[i].keyval), ==, tests[i].name);
+ g_assert_cmpuint (gdk_keyval_from_name (tests[i].name), ==, tests[i].keyval);
+ if (tests[i].other_name)
+ g_assert_cmpuint (gdk_keyval_from_name (tests[i].other_name), ==, tests[i].keyval);
+ }
+}
+
+static void
+test_keysyms_void (void)
+{
+ g_assert_cmpuint (gdk_keyval_from_name ("NoSuchKeysym"), ==, GDK_KEY_VoidSymbol);
+ g_assert_cmpstr (gdk_keyval_name (GDK_KEY_VoidSymbol), ==, "0xffffff");
+}
+
+static void
+test_keysyms_xf86 (void)
+{
+ g_assert_cmpuint (gdk_keyval_from_name ("XF86MonBrightnessUp"), ==, GDK_KEY_MonBrightnessUp);
+ g_assert_cmpuint (gdk_keyval_from_name ("XF86MonBrightnessDown"), ==, GDK_KEY_MonBrightnessDown);
+ g_assert_cmpuint (gdk_keyval_from_name ("XF86KbdBrightnessUp"), ==, GDK_KEY_KbdBrightnessUp);
+ g_assert_cmpuint (gdk_keyval_from_name ("XF86KbdBrightnessDown"), ==, GDK_KEY_KbdBrightnessDown);
+ g_assert_cmpuint (gdk_keyval_from_name ("XF86Battery"), ==, GDK_KEY_Battery);
+ g_assert_cmpuint (gdk_keyval_from_name ("XF86Display"), ==, GDK_KEY_Display);
+
+ g_assert_cmpuint (gdk_keyval_from_name ("MonBrightnessUp"), ==, GDK_KEY_MonBrightnessUp);
+ g_assert_cmpuint (gdk_keyval_from_name ("MonBrightnessDown"), ==, GDK_KEY_MonBrightnessDown);
+ g_assert_cmpuint (gdk_keyval_from_name ("KbdBrightnessUp"), ==, GDK_KEY_KbdBrightnessUp);
+ g_assert_cmpuint (gdk_keyval_from_name ("KbdBrightnessDown"), ==, GDK_KEY_KbdBrightnessDown);
+ g_assert_cmpuint (gdk_keyval_from_name ("Battery"), ==, GDK_KEY_Battery);
+ g_assert_cmpuint (gdk_keyval_from_name ("Display"), ==, GDK_KEY_Display);
+}
+
+int main (int argc, char *argv[])
+{
+ setlocale (LC_ALL, "");
+
+ g_test_init (&argc, &argv, NULL);
+ gdk_init (&argc, &argv);
+
+ g_test_add_func ("/keysyms/basic", test_keysyms_basic);
+ g_test_add_func ("/keysyms/void", test_keysyms_void);
+ g_test_add_func ("/keysyms/xf86", test_keysyms_xf86);
+
+ return g_test_run ();
+}
--- /dev/null
+[Test]
+Exec=/bin/sh -c "@pkglibexecdir@/installed-tests/keysyms"
+Type=session
--- /dev/null
+#include <locale.h>
+#include <gdk/gdk.h>
+
+static void
+test_color_parse (void)
+{
+ GdkRGBA color;
+ GdkRGBA expected;
+ gboolean res;
+
+ res = gdk_rgba_parse (&color, "foo");
+ g_assert (!res);
+
+ res = gdk_rgba_parse (&color, "");
+ g_assert (!res);
+
+ expected.red = 100/255.;
+ expected.green = 90/255.;
+ expected.blue = 80/255.;
+ expected.alpha = 0.1;
+ res = gdk_rgba_parse (&color, "rgba(100,90,80,0.1)");
+ g_assert (res);
+ g_assert (gdk_rgba_equal (&color, &expected));
+
+ expected.red = 0.4;
+ expected.green = 0.3;
+ expected.blue = 0.2;
+ expected.alpha = 0.1;
+ res = gdk_rgba_parse (&color, "rgba(40%,30%,20%,0.1)");
+ g_assert (res);
+ g_assert (gdk_rgba_equal (&color, &expected));
+
+ res = gdk_rgba_parse (&color, "rgba( 40 % , 30 % , 20 % , 0.1 )");
+ g_assert (res);
+ g_assert (gdk_rgba_equal (&color, &expected));
+
+ expected.red = 1.0;
+ expected.green = 0.0;
+ expected.blue = 0.0;
+ expected.alpha = 1.0;
+ res = gdk_rgba_parse (&color, "red");
+ g_assert (res);
+ g_assert (gdk_rgba_equal (&color, &expected));
+
+ expected.red = 0.0;
+ expected.green = 0x8080 / 65535.;
+ expected.blue = 1.0;
+ expected.alpha = 1.0;
+ res = gdk_rgba_parse (&color, "#0080ff");
+ g_assert (res);
+ g_assert (gdk_rgba_equal (&color, &expected));
+
+ expected.red = 0.0;
+ expected.green = 0.0;
+ expected.blue = 0.0;
+ expected.alpha = 1.0;
+ res = gdk_rgba_parse (&color, "rgb(0,0,0)");
+ g_assert (res);
+ g_assert (gdk_rgba_equal (&color, &expected));
+}
+
+static void
+test_color_to_string (void)
+{
+ GdkRGBA rgba;
+ GdkRGBA out;
+ gchar *res;
+ gchar *res_de;
+ gchar *res_en;
+ gchar *orig;
+
+ /* Using /255. values for the r, g, b components should
+ * make sure they round-trip exactly without rounding
+ * from the double => integer => double conversions */
+ rgba.red = 1.0;
+ rgba.green = 128/255.;
+ rgba.blue = 64/255.;
+ rgba.alpha = 0.5;
+
+ orig = g_strdup (setlocale (LC_ALL, NULL));
+ res = gdk_rgba_to_string (&rgba);
+ gdk_rgba_parse (&out, res);
+ g_assert (gdk_rgba_equal (&rgba, &out));
+
+ setlocale (LC_ALL, "de_DE.utf-8");
+ res_de = gdk_rgba_to_string (&rgba);
+ g_assert_cmpstr (res, ==, res_de);
+
+ setlocale (LC_ALL, "en_US.utf-8");
+ res_en = gdk_rgba_to_string (&rgba);
+ g_assert_cmpstr (res, ==, res_en);
+
+ g_free (res);
+ g_free (res_de);
+ g_free (res_en);
+
+ setlocale (LC_ALL, orig);
+ g_free (orig);
+}
+
+static void
+test_color_copy (void)
+{
+ GdkRGBA rgba;
+ GdkRGBA *out;
+
+ rgba.red = 0.0;
+ rgba.green = 0.1;
+ rgba.blue = 0.6;
+ rgba.alpha = 0.9;
+
+ out = gdk_rgba_copy (&rgba);
+ g_assert (gdk_rgba_equal (&rgba, out));
+
+ gdk_rgba_free (out);
+}
+
+static void
+test_color_parse_nonsense (void)
+{
+ GdkRGBA color;
+ gboolean res;
+
+ g_test_bug ("667485");
+
+ res = gdk_rgba_parse (&color, "rgb(,,)");
+ g_assert (!res);
+
+ res = gdk_rgba_parse (&color, "rgb(%,%,%)");
+ g_assert (!res);
+
+ res = gdk_rgba_parse (&color, "rgb(nan,nan,nan)");
+ g_assert (!res);
+
+ res = gdk_rgba_parse (&color, "rgb(inf,inf,inf)");
+ g_assert (!res);
+
+ res = gdk_rgba_parse (&color, "rgb(1p12,0,0)");
+ g_assert (!res);
+
+ res = gdk_rgba_parse (&color, "rgb(5d1%,1,1)");
+ g_assert (!res);
+
+ res = gdk_rgba_parse (&color, "rgb(0,0,0)moo");
+ g_assert (!res);
+
+ res = gdk_rgba_parse (&color, "rgb(0,0,0) moo");
+ g_assert (!res);
+}
+
+int
+main (int argc, char *argv[])
+{
+ g_test_init (&argc, &argv, NULL);
+
+ g_test_bug_base ("http://bugzilla.gnome.org");
+
+ g_test_add_func ("/rgba/parse", test_color_parse);
+ g_test_add_func ("/rgba/parse/nonsense", test_color_parse_nonsense);
+ g_test_add_func ("/rgba/to-string", test_color_to_string);
+ g_test_add_func ("/rgba/copy", test_color_copy);
+
+ return g_test_run ();
+}
--- /dev/null
+[Test]
+Exec=/bin/sh -c "@pkglibexecdir@/installed-tests/rgba"
+Type=session